package com.pausa.sgdi.model
{
	import com.pausa.sgdi.ejb.entities.Empresa;
	import com.pausa.sgdi.ejb.entities.Perfil;
	import com.pausa.sgdi.ejb.entities.Puesto;
	import com.pausa.sgdi.ejb.entities.Situacion;
	import com.pausa.sgdi.ejb.entities.Tecnico;
	import com.pausa.sgdi.ejb.entities.TipoDispositivo;
	import com.pausa.sgdi.ejb.entities.TipoEmpresa;
	import com.pausa.sgdi.ejb.entities.TipoId;
	import com.pausa.sgdi.ejb.entities.Usuario;
	import com.pausa.sgdi.ejb.entities.Zona;
	import com.pausa.sgdi.model.vo.ComboDTO;
	
	import mx.collections.ArrayCollection;

	public class Model
	{
		private static var _instance : Model;
		
		[ArrayElementType("com.pausa.sgdi.ejb.entities.Zona")]
		private var _zonas : ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.TipoDispositivo")]
		private var _tiposDispositivo : ArrayCollection = new ArrayCollection();
		[ArrayElementType("com.pausa.sgdi.ejb.entities.TipoEmpresa")]
		private var _tiposEmpresa : ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.Puesto")]
		private var _puestos : ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.Perfil")]
		private var _perfiles : ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.TipoId")]
		private var _tiposID : ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.Situacion")]
		private var _situaciones : ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.Empresa")]
		private var _empresas :ArrayCollection;
		[ArrayElementType("com.pausa.sgdi.ejb.entities.Usuario")]
		private var _usuarios : ArrayCollection;
		
		private var _tiposEntrada : ArrayCollection;
		
		private var _usuario : Usuario;
		
		public var tecnicos : ArrayCollection = new ArrayCollection();
		public var selected : Object = new Object();
		
		public static function getInstance():Model{
			if(_instance == null){
				_instance = new Model();
				_instance._zonas = new ArrayCollection();
				_instance._tiposDispositivo = new ArrayCollection();
				_instance._tiposEmpresa = new ArrayCollection();
				_instance._perfiles = new ArrayCollection();
				_instance._puestos = new ArrayCollection();
				_instance._tiposID = new ArrayCollection();
				_instance._situaciones = new ArrayCollection();
				_instance._empresas  = new ArrayCollection();
				_instance._usuarios = new ArrayCollection();
				_instance._tiposEntrada = new ArrayCollection();
			}			
			return _instance;
		}
		
		public function set usuario(value : Usuario):void
		{
			_usuario = value;
		}
		
		public function get usuario():Usuario
		{
			var usuario : Usuario = new Usuario();
			usuario.idUsuario = 1;
			usuario.idZona = 1;
			usuario.idPuesto = 1;
			usuario.nombre = 'Ceury ';
			var perfil : Perfil = new Perfil();
			perfil.idPerfil = 1;
			usuario.perfil = perfil;
			var empresa : Empresa = new Empresa();
			empresa.idEmpresa = 1;
			usuario.empresa = empresa;
			_usuario = usuario;
			return _usuario;
		}
		
		public function getZonas():ArrayCollection{
			return _zonas;
		}		
		
		public function get zonas():ArrayCollection
		{
			return _zonas;
		}
		
		public function set zonas( values : ArrayCollection):void
		{
			_zonas = values;
		}
		
		public function getZonaDescripcion(id : Number):String
		{
			var result : String = '';
			for each(var zona : Zona in _zonas){
				if(id == zona.idZona){
					result = zona.descripcion;
					break;
				}
			}
			return result;
		}
		
		public function getDescripcion(id : Number,property : String, data : ArrayCollection):String
		{
			var result : String = '';
			for each(var object : Object in data){
				if(id == Number(object[property])){
					if(object.hasOwnProperty('descripcion')){
						result = object.descripcion;
					}else if(object.hasOwnProperty('nombre')){
						result = object.nombre;
					}
				}
			}
			return result;
		}
		
		public function set tipoDispositivo(value : ArrayCollection):void
		{
			_tiposDispositivo = value;
		}
		
		public function get tipoDispositivo():ArrayCollection
		{
			return _tiposDispositivo;
		}
		
		public function getTipoDispositivo():ArrayCollection
		{
//			tiposDispositivo.removeAll();
//			var descripciones : Array = new Array('"A" Esfera IDA', '"A" Esfera Regreo', '"B" Pedestal Original', '"B" Pedestal Adaptado');
//			for(var i : Number = 0; i< descripciones.length; i++){
//				var tipoDispositivo : TipoDispositivo =  new TipoDispositivo();
//				tipoDispositivo.idTipoDispositivo = i;
//				tipoDispositivo.descripcion = descripciones[i];
//				var zona : Zona = new Zona();
//				zona.idZona = 1;
//				tipoDispositivo.zona = zona;
//				tiposDispositivo.addItem(tipoDispositivo);
//			}
			return _tiposDispositivo;
		}
		
//		public function setTiposDispositivo(tipoDispositivo : TipoDispositivo):void
//		{
//			_tiposDispositivo.addItem(tipoDispositivo);
//		}
		
		public function set empresas(value : ArrayCollection):void
		{
			_empresas = value;
		}
		
		public function get empresas():ArrayCollection
		{
			return _empresas;
		}
		
		public function getEmpresas():ArrayCollection
		{
//			var empresa : Empresa = new Empresa();
//			empresa.idEmpresa = 1;
//			empresa.nombre = 'PAUSA';
//			empresa.correoElectronico  = 'xxxxxxx@pausa.com.mx';
//			empresa.nombreResponsable = 'Guadalupe Vallejo';
//			empresa.rfc = 'XXXX000000AAA';
//			empresa.telefono = '55-0000-0000';
//			empresa.fax = '55-FAX0-0000';
//			var zona : Zona = new Zona();
//			zona.idZona = 2;
//			zona.descripcion = 'Monterrey';
////			empresa. = zona;
//			empresas.addItem(empresa);
			return _empresas;	
		}
		
		public function getEmpresa(idEmpresa : Number):Empresa
		{
			var result : Empresa;
			for each(var empresa : Empresa in empresas){
				if(empresa.idEmpresa == idEmpresa){
					result = empresa;
					break
				}
			}
			return result;
		}
		
		public function getTipoEmpresas():ArrayCollection
		{
//			tiposEmpresa.removeAll();
//			var tipoEmpresa : TipoEmpresa = new TipoEmpresa();
//			tipoEmpresa.idTipoEc = 1;
//			tipoEmpresa.descripcion = 'ATC';
//			tiposEmpresa.addItem(tipoEmpresa);
//			var tipoEmpresa1 : TipoEmpresa = new TipoEmpresa();
//			tipoEmpresa1.idTipoEc = 2;
//			tipoEmpresa1.descripcion = 'RCXN';
//			tiposEmpresa.addItem(tipoEmpresa1);
			return _tiposEmpresa;
		}
		
		public function set tiposEmpresa(value : ArrayCollection):void
		{
			_tiposEmpresa = value;
		}
		
		public function get tiposEmpresa():ArrayCollection
		{
			return  _tiposEmpresa;
		}
		
		public function set situaciones(values : ArrayCollection):void
		{
			_situaciones = values;
		}
			
		public function get situaciones():ArrayCollection
		{
			return _situaciones;
		}
		
		public function getSituacion():ArrayCollection
		{
//			situaciones.removeAll();
//			var descripciones : Array = new Array('Nuevo', 'Asignado AC', 'Asignado a Técnico', 'Reasignado a Técnico', 'Instalado', 'Retirado','Disposición Nueva Asignación');
//			for(var i : Number = 0; i< descripciones.length; i++){
//				var situacion : Situacion = new Situacion();
//				situacion.idSituacion = i;
//				situacion.descripcion = descripciones[i];
//				situaciones.addItem(situacion);
//			}
			return situaciones;
		}
		public function set tiposID(values : ArrayCollection):void
		{
			_tiposID = values;
		}
			
		public function get tiposID():ArrayCollection
		{
			return _tiposID;
		}
		
		public function getTipoID():ArrayCollection
		{
//			tiposID.removeAll();
//			var descripciones : Array = new Array('IFE', 'Pasaporte', 'Licencia');
//			for(var i : Number = 0; i< descripciones.length; i++){
//				var tipoId : TipoId = new TipoId();
//				tipoId.idTipoId = i;
//				tipoId.descripction = descripciones[i];
//				tiposID.addItem(tipoId);
//			}
			return tiposID;
		}
		
		public function set perfiles(values : ArrayCollection):void
		{
			_perfiles = values;
		}
		
		public function get perfiles():ArrayCollection
		{
			return _perfiles;
		}
		
		
		public function getPerfiles():ArrayCollection
		{
//			perfiles.removeAll();
//			var descripciones : Array = new Array('Usuario', 'Administrador');
//			for(var i : Number = 0; i< descripciones.length; i++){
//				var perfil : Perfil = new Perfil();
//				perfil.idPerfil = i;
//				perfil.descripcion = descripciones[i];
//				perfiles.addItem(perfil);
//			}
			return perfiles;
		}
		
		public function set puestos(values : ArrayCollection):void
		{
			_puestos = values;
		}
		
		public function get puestos():ArrayCollection
		{
			return _puestos;
		}
		
		public function getPuestos():ArrayCollection
		{
//			perfiles.removeAll();
//			var descripciones : Array = new Array('Adminisrador', 'Almacén', 'Cordinador');
//			for(var i : Number = 0; i< descripciones.length; i++){
//				var puesto : Puesto = new Puesto();
//				puesto.idPuesto = i;
//				puesto.descripcion = descripciones[i];
//				perfiles.addItem(puesto);
//			}
			return puestos;
		}
		
		public function getTecnicos():ArrayCollection
		{
//			tecnicos.removeAll();
//			var tecnico : Tecnico = new Tecnico();
//			tecnico.idTecnico = 1;
//			var usuario : Usuario = new Usuario();
//			usuario.nombre = 'Usuario 1'
//			usuario.telefono = '81-0000-0000';	
//			tecnico.usuario = usuario;
//			tecnicos.addItem(tecnico);
			return tecnicos;
		}
		
		public function set usuarios(value : ArrayCollection):void
		{
			_usuarios = value;
		}
		
		public function get usuarios():ArrayCollection
		{
			return _usuarios;
		}
		
		public function set tipoEntrada(value : ArrayCollection):void
		{
			_tiposEntrada = value;
		}
		
		public function get tipoEntrada():ArrayCollection
		{
			_tiposEntrada.removeAll();
			var tipoEntrada :ComboDTO = new ComboDTO();
			tipoEntrada.value = '1';
			tipoEntrada.label = 'Devolución';
			_tiposEntrada.addItem(tipoEntrada);
			var tipoEntrada1 :ComboDTO = new ComboDTO();
			tipoEntrada1.value = '2';
			tipoEntrada1.label = 'Retiro';
			_tiposEntrada.addItem(tipoEntrada1);
			return _tiposEntrada;
		}
	}
}